package com.emm.yixun.system.service;

import java.util.List;

import javax.jws.WebService;

import com.emm.yixun.common.app.AgentListResDto;
import com.emm.yixun.common.app.QueryAgentListByCustomerPhoneReqDto;
import com.emm.yixun.common.model.User;
import com.emm.yixun.common.model.dto.OaUserExcelDto;
import com.emm.yixun.common.model.dto.OrgOaDataVo;
import com.emm.yixun.common.model.dto.ResponseOrg;
import com.emm.yixun.common.model.dto.UserDto;
import com.emm.yixun.common.page.Page;
import com.emm.yixun.common.response.Response;
import com.emm.yixun.common.response.ResponseList;

@WebService
public interface UserServiceFacade {
	/**
	 * 系统登陆
	 */
	public Response<User> login(Long merchantId, String account, String password);

	/**
	 * 新增
	 */
	Response<UserDto> save(UserDto dto);

	/**
	 * 修改,当selective=true时修改非空列,当selective=false修改所有列
	 */
	Response<Integer> updateByPrimaryKey(UserDto dto, boolean uniqueVerification, Boolean selective);

	/**
	 * 逻辑删除
	 */
	Response<Integer> deleteByPrimaryKey(Long id);

	/**
	 * 主键查询
	 */
	Response<User> findById(Long id);

	/**
	 * 根据dto查询记录
	 */
	ResponseList<User> findByDto(UserDto dto);

	/**
	 * 根据dto以及分页参数查询记录
	 */
	Page<User> findPageByDto(UserDto dto, Integer begin, Integer row);

	/**
	 * 修改密码 opwd:原密码 npwd：新密码 qpwd:确认新密码
	 */
	Response<Boolean> changePassword(Long userId, String opwd, String npwd, String qpwd);

	/**
	 * 根据项目ID获取该项目下所有销售组人员
	 * 
	 * @param projectId
	 * @return
	 */
	ResponseList<User> userByProjectIdForGroup(Long projectId, String resourcesCode, Long isList, Long userId);

	/**
	 * 根据dto查询并过滤数据权限过滤
	 */
	ResponseList<User> findDataPermissionByDto(UserDto dto, Boolean isDataPermission);
	/**
	 * 接口同步OA数据
	 * @param orgData
	 * @return
	 */
	Response<ResponseOrg> orgData(OrgOaDataVo orgData,User user);
	
	/**
	 * 
	 * hotFixUserCode:(修复用户编码). <br/>
	 * @author Administrator
	 * @param userCode
	 * @return
	 * @since JDK 1.6
	 */
	Response<String> hotFixUserCode(List<OaUserExcelDto> userCode);
	
	/**
	 * 根据客户手机号查询经纪人列表
	 */
	AgentListResDto agentListByCustomerPhone(QueryAgentListByCustomerPhoneReqDto reqDto);
}
